package com.protocolmeter.function;

/**
 * @ClassName: FrameFunction
 * @Description: 规约函数
 * @author baozhijian
 * @date 2017年7月27日 下午4:01:29
 * @version V1.0
 */
public class FrameFunction {

	// 高低位互换
	public String Reverse(String data) {
		int i = data.length() / 2;
		String returndata = "";
		for (int j = 0; j < i; j++) {
			returndata += data.substring(data.length() - 2 - 2 * j, data.length() - 2 * j);
		}
		return returndata;
	}

	// 加、键33
	public String AddOrSub33(String data, boolean add) {
		int len = data.length() / 2;
		String temp = "";
		for (int i = 0; i < len; i++) {
			if (add) {
				// 加33
				temp += Integer.toHexString((Integer.valueOf(data.substring(2 * i, 2 * i + 2), 16) + 0x33) | 0x100)
						.substring(1, 3);
			} else {
				// 减33
				temp += Integer
						.toHexString(((Integer.valueOf(data.substring(2 * i, 2 * i + 2), 16) | 0x100) - 0x33) | 0x100)
						.substring(1, 3);

			}
		}

		return temp;
	}

	// 计算cs
	public String Cs(String data) {
		int cs = 0x00;
		int i = data.length() / 2;
		for (int j = 0; j < i; j++) {
			cs += Integer.parseInt(data.substring(j * 2, j * 2 + 2), 16);
		}
		String datacs = Integer.toHexString(cs);
		while (datacs.length() < 2) {
			datacs = "0" + datacs;
		}
		datacs = datacs.substring(datacs.length() - 2, datacs.length());
		return datacs;
	}
	
	
}
